/**
 * 便签相关 API
 */
import { get, post, put, del } from '../utils/request.js'
import { API_ENDPOINTS } from '../utils/config.js'

/**
 * 获取便签列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码，从0开始
 * @param {number} params.size 每页大小
 * @param {string} params.sort 排序字段和方向
 * @returns {Promise} 便签列表
 */
export const getNotesList = async (params = {}) => {
  const defaultParams = {
    page: 0,
    size: 20,
    sort: 'updateTime,desc'
  }
  return get(API_ENDPOINTS.NOTES.LIST, { ...defaultParams, ...params })
}

/**
 * 获取便签详情
 * @param {number} id 便签ID
 * @returns {Promise} 便签详情
 */
export const getNoteDetail = async (id) => {
  const url = API_ENDPOINTS.NOTES.DETAIL.replace('{id}', id)
  return get(url)
}

/**
 * 创建便签
 * @param {Object} noteData 便签数据
 * @param {string} noteData.title 便签标题
 * @param {string} noteData.content 便签内容
 * @returns {Promise} 创建结果
 */
export const createNote = async (noteData) => {
  return post(API_ENDPOINTS.NOTES.CREATE, noteData)
}

/**
 * 更新便签
 * @param {number} id 便签ID
 * @param {Object} noteData 便签数据
 * @param {string} noteData.title 便签标题
 * @param {string} noteData.content 便签内容
 * @returns {Promise} 更新结果
 */
export const updateNote = async (id, noteData) => {
  const url = API_ENDPOINTS.NOTES.UPDATE.replace('{id}', id)
  return put(url, noteData)
}

/**
 * 删除便签
 * @param {number} id 便签ID
 * @returns {Promise} 删除结果
 */
export const deleteNote = async (id) => {
  const url = API_ENDPOINTS.NOTES.DELETE.replace('{id}', id)
  return del(url)
}

/**
 * 批量删除便签
 * @param {Array<number>} ids 便签ID数组
 * @returns {Promise} 删除结果
 */
export const batchDeleteNotes = async (ids) => {
  return del(API_ENDPOINTS.NOTES.LIST, { ids })
}
